JavaScriptã®ãªãã·ã§ãã«ãã§ã€ãã³ã°ïŒ?.ïŒãšãã©ã±ããèšæ³ããã¹ã¿ãŒããå ç¢ã§åçãªããããã£ã¢ã¯ã»ã¹ãå®çŸãå®è·µçãªäŸãšãã¹ããã©ã¯ãã£ã¹ã§åŠã³ãŸãã
JavaScriptã®ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ïŒåçããããã£ã¢ã¯ã»ã¹ã培åºè§£èª¬
çŸä»£ã®JavaScriptéçºã«ãããŠãè€éãªããŒã¿æ§é ãæäœããããšã¯äžè¬çãªã¿ã¹ã¯ã§ããååšããªãå¯èœæ§ã®ããããããã£ã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåãå€ããããããšã©ãŒãäºæãã¬åäœã«ã€ãªããããšããããŸãã幞ããªããšã«ãJavaScriptã«ã¯ãªãã·ã§ãã«ãã§ã€ãã³ã°ïŒ?.ïŒããã©ã±ããèšæ³ã®ãããªåŒ·åãªããŒã«ãããããããã®ç¶æ³ã«åªé ã«å¯ŸåŠã§ããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ããããã®æ©èœããã®å©ç¹ããããŠã³ãŒãã®å ç¢æ§ãšä¿å®æ§ãåäžãããããã®å®è·µçãªå¿çšäŸã«ã€ããŠæ¢ããŸãã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ïŒ?.ïŒãçè§£ãã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ã¯ããã¹ãããããªããžã§ã¯ãã®ããããã£ã«ã¢ã¯ã»ã¹ããéã«ãåéå±€ã®ååšãæç€ºçã«ãã§ãã¯ããããšãªããç°¡æœã«èšè¿°ããæ¹æ³ã§ããé£éå
ã®ããããã£ãnullishïŒnullãŸãã¯undefinedïŒã§ããå ŽåãåŒã¯ç絡è©äŸ¡ããããšã©ãŒãã¹ããŒãã代ããã«undefinedãè¿ããŸããããã«ãããããŒã¿ãæ¬ æããŠããå¯èœæ§ã«å¯ŸåŠããéã«ã³ãŒããã¯ã©ãã·ã¥ããã®ãé²ããŸãã
åºæ¬çãªæ§æ
ãªãã·ã§ãã«ãã§ã€ãã³ã°æŒç®åã¯?.ã§è¡šãããŸããããããã£åã®åŸã«é
眮ããããããã£ãžã®ã¢ã¯ã»ã¹ãæ¡ä»¶ä»ãã§å®è¡ããããšã瀺ããŸãã
äŸïŒ
const user = {
profile: {
address: {
city: 'London'
}
}
};
// ãªãã·ã§ãã«ãã§ã€ãã³ã°ãªãã®å ŽåïŒ
let city;
if (user && user.profile && user.profile.address) {
city = user.profile.address.city;
}
console.log(city); // åºåïŒLondon
// ãªãã·ã§ãã«ãã§ã€ãã³ã°ããã®å ŽåïŒ
const cityWithOptionalChaining = user?.profile?.address?.city;
console.log(cityWithOptionalChaining); // åºåïŒLondon
const nonExistentCity = user?.profile?.contact?.address?.city; // profile.contactã¯ååšããªã
console.log(nonExistentCity); // åºåïŒundefined
äžèšã®äŸã§ã¯ã2çªç®ã®console.logããæ·±ããã¹ããããããããã£ãžã®ã¢ã¯ã»ã¹ããã»ã¹ããªãã·ã§ãã«ãã§ã€ãã³ã°ãã©ã®ããã«ç°¡çŽ åãããã瀺ããŠããŸããããããã£ïŒprofileãaddressããŸãã¯cityïŒã®ãããããnullãŸãã¯undefinedã§ããå ŽåãåŒã¯undefinedãè¿ããTypeErrorãé²ããŸãã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ã®ãŠãŒã¹ã±ãŒã¹
- APIã¬ã¹ãã³ã¹ãžã®ã¢ã¯ã»ã¹ïŒ APIããããŒã¿ãååŸããéãã¬ã¹ãã³ã¹ã®æ§é ã¯æ§ã ã§ãããªãã·ã§ãã«ãã§ã€ãã³ã°ã䜿ãã°ãããŒã¿ã®æ¬ æãäžå®å šããå¿é ããããšãªãç¹å®ã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ã§ããŸãã
- ãŠãŒã¶ãŒãããã¡ã€ã«ã®æäœïŒ ãŠãŒã¶ãŒãããã¡ã€ã«ãæã€ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãç¹å®ã®ãã£ãŒã«ãããªãã·ã§ãã«ïŒä»»æïŒã§ããå ŽåããããŸãããªãã·ã§ãã«ãã§ã€ãã³ã°ã䜿çšãããšããšã©ãŒãåŒãèµ·ããããšãªããããã®ãã£ãŒã«ãã«å®å šã«ã¢ã¯ã»ã¹ã§ããŸãã
- åçããŒã¿ã®åŠçïŒ é »ç¹ã«å€æŽãããããæ§é ãå¯å€ã§ãã£ããããããŒã¿ãæ±ãéã«ããªãã·ã§ãã«ãã§ã€ãã³ã°ã¯å³æ Œãªæ³å®ãããããšãªãããããã£ã«ã¢ã¯ã»ã¹ããå ç¢ãªæ¹æ³ãæäŸããŸãã
颿°åŒã³åºãã«ããããªãã·ã§ãã«ãã§ã€ãã³ã°
ãªãã·ã§ãã«ãã§ã€ãã³ã°ã¯ãååšããªãå¯èœæ§ã®ããããããã¯nullã§ããå¯èœæ§ã®ãã颿°ãåŒã³åºãéã«ã䜿çšã§ããŸããããã¯ãã€ãã³ããªã¹ããŒãã³ãŒã«ããã¯ãæ±ãéã«ç¹ã«äŸ¿å©ã§ãã
const myObject = {
myMethod: function() {
console.log('ã¡ãœãããåŒã³åºãããŸããïŒ');
}
};
myObject.myMethod?.(); // myMethodãååšããå Žåã«åŒã³åºã
const anotherObject = {};
anotherObject.myMethod?.(); // äœãããããšã©ãŒãã¹ããŒãããªã
ãã®å Žåã?.()æ§æã¯ã颿°ããªããžã§ã¯ãäžã«ååšããå Žåã«ã®ã¿åŒã³åºãããããšãä¿èšŒããŸãã颿°ãnullãŸãã¯undefinedã§ããå ŽåãåŒã¯ãšã©ãŒãã¹ããŒããããšãªãundefinedãšè©äŸ¡ãããŸãã
ãã©ã±ããèšæ³ãçè§£ãã
ãã©ã±ããèšæ³ã¯ã倿°ãåŒã䜿çšããŠãªããžã§ã¯ãã®ããããã£ã«åçã«ã¢ã¯ã»ã¹ããæ¹æ³ãæäŸããŸããããã¯ãããããã£åãäºåã«ç¥ããªãå Žåããæå¹ãªJavaScriptèå¥åã§ã¯ãªãååãæã€ããããã£ã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåã«ç¹ã«äŸ¿å©ã§ãã
åºæ¬çãªæ§æ
ãã©ã±ããèšæ³ã§ã¯ãè§æ¬åŒ§ïŒ[]ïŒã䜿çšããŠããããã£åãå²ã¿ãŸããããããã£åã¯æååããŸãã¯æååã«è©äŸ¡ãããåŒã§ãã
äŸïŒ
const person = {
firstName: 'Alice',
lastName: 'Smith',
'age-group': 'adult'
};
// ãããèšæ³ã«ããããããã£ã¢ã¯ã»ã¹ïŒåçŽãªååã®å ŽåïŒïŒ
console.log(person.firstName); // åºåïŒAlice
// ãã©ã±ããèšæ³ã«ããããããã£ã¢ã¯ã»ã¹ïŒåçãªååãç¡å¹ãªèå¥åã®å ŽåïŒïŒ
console.log(person['lastName']); // åºåïŒSmith
console.log(person['age-group']); // åºåïŒadult
const propertyName = 'firstName';
console.log(person[propertyName]); // åºåïŒAlice
äžèšã®äŸã§ã¯ããã©ã±ããèšæ³ãæå¹ãªJavaScriptèå¥åã§ã¯ãªãååãæã€ããããã£ïŒäŸïŒ'age-group'ïŒã«ã¢ã¯ã»ã¹ããããããŸã倿°ïŒpropertyNameïŒã䜿çšããŠåçã«ããããã£ã«ã¢ã¯ã»ã¹ããããã«äœ¿çšãããŠããŸãã
ãã©ã±ããèšæ³ã®ãŠãŒã¹ã±ãŒã¹
- åçãªååãæã€ããããã£ãžã®ã¢ã¯ã»ã¹ïŒ ããããã£åãå®è¡æã«æ±ºå®ãããå ŽåïŒäŸïŒãŠãŒã¶ãŒå ¥åãAPIã¬ã¹ãã³ã¹ã«åºã¥ãïŒããã©ã±ããèšæ³ã¯äžå¯æ¬ ã§ãã
- ç¹æ®æåãå«ãããããã£ãžã®ã¢ã¯ã»ã¹ïŒ ããããã£åã«ç¹æ®æåïŒäŸïŒãã€ãã³ãã¹ããŒã¹ïŒãå«ãŸããŠããå Žåããã©ã±ããèšæ³ãå¯äžã®ã¢ã¯ã»ã¹æ¹æ³ã§ãã
- ããããã£ã®å埩åŠçïŒ ãã©ã±ããèšæ³ã¯ãã«ãŒãå ã§ãªããžã§ã¯ãã®ããããã£ãå埩åŠçããããã«ãã䜿çšãããŸãã
ãã©ã±ããèšæ³ã«ãããªããžã§ã¯ãããããã£ã®å埩åŠç
ãã©ã±ããèšæ³ã¯ãfor...inã«ãŒãã䜿çšããŠãªããžã§ã¯ãã®ããããã£ãå埩åŠçãããå Žåã«ç¹ã«äŸ¿å©ã§ãã
const car = {
make: 'Toyota',
model: 'Camry',
year: 2023
};
for (const key in car) {
if (car.hasOwnProperty(key)) { // èªèº«ã®ããããã£ããã§ãã¯
console.log(key + ': ' + car[key]);
}
}
// åºåïŒ
// make: Toyota
// model: Camry
// year: 2023
ãã®äŸã§ã¯ãfor...inã«ãŒããcarãªããžã§ã¯ãã®ããããã£ãå埩åŠçããåããããã£ã®å€ã«ã¢ã¯ã»ã¹ããããã«ãã©ã±ããèšæ³ã䜿çšãããŠããŸãã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã®çµã¿åãã
æ¬åœã®åã¯ããªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ãçµã¿åãããŠãåçãªããããã£åãšæ¬ æã®å¯èœæ§ãããããŒã¿ãæã€è€éãªããŒã¿æ§é ãæ±ããšãã«çºæ®ãããŸãããã®çµã¿åããã«ããããªããžã§ã¯ãã®æ§é ãäºåã«ç¥ããªããŠããå®å šã«ããããã£ã«ã¢ã¯ã»ã¹ã§ããŸãã
æ§æ
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ãçµã¿åãããã«ã¯ãè§æ¬åŒ§ã®åã«?.æŒç®åã䜿çšããŸãã
äŸïŒ
const data = {
users: [
{
id: 1,
profile: {
details: {
country: 'Canada'
}
}
},
{
id: 2,
profile: {
}
}
]
};
function getCountry(userId) {
// idã§ãŠãŒã¶ãŒãæ€çŽ¢
const user = data.users.find(user => user.id === userId);
// ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã䜿çšããŠãŠãŒã¶ãŒã®åœã«ã¢ã¯ã»ã¹
const country = user?.profile?.details?.['country'];
return country;
}
console.log(getCountry(1)); // åºåïŒCanada
console.log(getCountry(2)); // åºåïŒundefinedïŒdetailsããããã£ãªãïŒ
console.log(getCountry(3)); // åºåïŒundefinedïŒid 3ã®ãŠãŒã¶ãŒãªãïŒ
äžèšã®äŸã§ã¯ãgetCountry颿°ãç¹å®ã®IDãæã€ãŠãŒã¶ãŒã®åœãååŸããããšããŸãããªãã·ã§ãã«ãã§ã€ãã³ã°ïŒ?.ïŒããã©ã±ããèšæ³ïŒ['country']ïŒã®åã«äœ¿çšãããuserãprofileããŸãã¯detailsããããã£ãnullãŸãã¯undefinedã®å Žåã«ã³ãŒãããšã©ãŒãã¹ããŒããªãããã«ä¿èšŒããŸãã
é«åºŠãªãŠãŒã¹ã±ãŒã¹
- åçãªãã©ãŒã ããŒã¿ïŒ ãã£ãŒã«ããäºåã«ããããªãåçãªãã©ãŒã ãæ±ãéããªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã䜿çšããŠãã©ãŒã ã®å€ãå®å šã«ã¢ã¯ã»ã¹ã§ããŸãã
- èšå®ãªããžã§ã¯ãã®åŠçïŒ èšå®ãªããžã§ã¯ãã¯ãã°ãã°ãªãã·ã§ãã«ãªããããã£ãæã€è€éãªæ§é ãããŠããŸãããªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã䜿çšãããšã峿 Œãªæ³å®ãªãã«ãããã®ããããã£ã«ã¢ã¯ã»ã¹ã§ããŸãã
- å¯å€æ§é ãæã€APIã¬ã¹ãã³ã¹ã®åŠçïŒ ç¹å®ã®æ¡ä»¶ã«åºã¥ããŠç°ãªã圢åŒã§ããŒã¿ãè¿ãAPIãæ±ãéããªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã¯å¿ èŠãªãã£ãŒã«ãã«æè»ã«ã¢ã¯ã»ã¹ããæ¹æ³ãæäŸããŸãã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã¯åŒ·åãªããŒã«ã§ãããæœåšçãªèœãšã穎ãé¿ããããã«ãããããè³¢æã«äœ¿çšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšãéèŠã§ãã
- ããŒã¿æ¬ æã®å¯èœæ§ãããå Žåã«ãªãã·ã§ãã«ãã§ã€ãã³ã°ã䜿çšããïŒ ããããã£ã
nullãŸãã¯undefinedã§ããå¯èœæ§ããããšäºæ³ãããå Žåã«ããªãã·ã§ãã«ãã§ã€ãã³ã°ã䜿çšãã¹ãã§ããããã«ãããšã©ãŒãé²ããã³ãŒããããå ç¢ã«ããŸãã - åçãªããããã£åã«ãã©ã±ããèšæ³ã䜿çšããïŒ ããããã£åãå®è¡æã«æ±ºå®ãããå Žåããããããã£åãæå¹ãªJavaScriptèå¥åã§ã¯ãªãå Žåã«ããã©ã±ããèšæ³ã䜿çšãã¹ãã§ãã
- ãªãã·ã§ãã«ãã§ã€ãã³ã°ã®ä¹±çšãé¿ããïŒ ãªãã·ã§ãã«ãã§ã€ãã³ã°ã¯ã³ãŒããç°¡æœã«ããããšãã§ããŸãããä¹±çšãããšçè§£ããããã°ãå°é£ã«ãªãå¯èœæ§ããããŸããå¿ èŠãªå Žåã«ã®ã¿äœ¿çšããŠãã ããã
- NullåäœæŒç®åïŒ??ïŒãšçµã¿åãããïŒ NullåäœæŒç®åïŒ
??ïŒã¯ãããããã£ãnullãŸãã¯undefinedã®å Žåã«ããã©ã«ãå€ãæäŸããããã«ããªãã·ã§ãã«ãã§ã€ãã³ã°ãšçµã¿åãããŠäœ¿çšã§ããŸãã - æç¢ºã§ç°¡æœãªã³ãŒããæžãïŒ æå³ã®ãã倿°åãã³ã¡ã³ãã䜿çšããŠãã³ãŒãã®çè§£ãšä¿å®ã容æã«ããŸãã
NullåäœæŒç®åïŒ??ïŒãšã®çµã¿åãã
NullåäœæŒç®åïŒ??ïŒã¯ãå€ãnullãŸãã¯undefinedã®å Žåã«ããã©ã«ãå€ãè¿ãæ¹æ³ãæäŸããŸããããã¯ãããããã£ãæ¬ æããŠããå Žåã«ãã©ãŒã«ããã¯å€ãæäŸããããã«ããªãã·ã§ãã«ãã§ã€ãã³ã°ãšçµã¿åãããŠäœ¿çšã§ããŸãã
const settings = {
theme: {
colors: {
primary: '#007bff'
}
}
};
const primaryColor = settings?.theme?.colors?.primary ?? '#ffffff'; // primary colorããªãå Žåã¯çœãããã©ã«ãã«ãã
console.log(primaryColor); // åºåïŒ#007bff
const secondaryColor = settings?.theme?.colors?.secondary ?? '#cccccc'; // secondary colorããªãå Žåã¯ã©ã€ãã°ã¬ãŒãããã©ã«ãã«ãã
console.log(secondaryColor); // åºåïŒ#cccccc
äžèšã®äŸã§ã¯ãnullåäœæŒç®åïŒ??ïŒãã察å¿ããããããã£ãnullãŸãã¯undefinedã®å Žåã«primaryColorããã³secondaryColor倿°ã«ããã©ã«ãå€ãæäŸããããã«äœ¿çšãããŠããŸãã
ãšã©ãŒãã³ããªã³ã°ãšãããã°
ãªãã·ã§ãã«ãã§ã€ãã³ã°ã¯ç¹å®ã®ã¿ã€ãã®ãšã©ãŒãé²ããŸãããããã§ããšã©ãŒãé©åã«åŠçããã³ãŒãã广çã«ãããã°ããããšãéèŠã§ãã以äžã«ããã€ãã®ãã³ãã瀺ããŸãã
- try-catchãããã¯ã䜿çšããïŒ äºæãã¬ãšã©ãŒãåŠçããããã«ãã³ãŒãã
try-catchãããã¯ã§å²ã¿ãŸãã - ã³ã³ãœãŒã«ãã°ã䜿çšããïŒ
console.logæã䜿çšããŠå€æ°ã®å€ãæ€æ»ããã³ãŒãã®ãããŒã远跡ããŸãã - ãããã°ããŒã«ã䜿çšããïŒ ãã©ãŠã¶ã®éçºè ããŒã«ãIDEã®ãããã°æ©èœã䜿çšããŠãã³ãŒããã¹ãããå®è¡ãããšã©ãŒãç¹å®ããŸãã
- åäœãã¹ããæžãïŒ ã³ãŒããæåŸ éãã«åäœããããšã確èªãããšã©ãŒãæ©æã«çºèŠããããã«åäœãã¹ããæžããŸãã
try {
const user = data.users.find(user => user.id === userId);
const country = user?.profile?.details?.['country'];
console.log(country ?? 'åœãèŠã€ãããŸãã');
} catch (error) {
console.error('ãšã©ãŒãçºçããŸããïŒ', error);
}
å®éã®äœ¿çšäŸ
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ãããŸããŸãªã·ããªãªã§ã©ã®ããã«äœ¿çšã§ããããããã€ãã®å®éã®äŸãèŠãŠã¿ãŸãããã
äŸ1ïŒAPIããã®ãŠãŒã¶ãŒããŒã¿ãžã®ã¢ã¯ã»ã¹
async function fetchUserData(userId) {
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
const userData = await response.json();
const userName = userData?.name ?? 'äžæãªãŠãŒã¶ãŒ';
const userEmail = userData?.email ?? 'ã¡ãŒã«ã¢ãã¬ã¹æªæäŸ';
const userCity = userData?.address?.city ?? 'éœåžæªæäŸ';
console.log(`ãŠãŒã¶ãŒåïŒ${userName}`);
console.log(`ã¡ãŒã«ã¢ãã¬ã¹ïŒ${userEmail}`);
console.log(`éœåžïŒ${userCity}`);
} catch (error) {
console.error('ãŠãŒã¶ãŒããŒã¿ã®ååŸã«å€±æããŸããïŒ', error);
}
}
// 䜿çšäŸïŒ
// fetchUserData(123);
ãã®äŸã¯ãAPIãããŠãŒã¶ãŒããŒã¿ãååŸãããªãã·ã§ãã«ãã§ã€ãã³ã°ãšnullåäœæŒç®åã䜿çšããŠç¹å®ã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ããæ¹æ³ã瀺ããŠããŸããããããã®ãã£ãŒã«ããæ¬ æããŠããå Žåãããã©ã«ãå€ã䜿çšãããŸãã
äŸ2ïŒåçãªãã©ãŒã ããŒã¿ã®åŠç
function processFormData(formData) {
const firstName = formData?.['first-name'] ?? '';
const lastName = formData?.['last-name'] ?? '';
const age = formData?.age ?? 0;
console.log(`åïŒ${firstName}`);
console.log(`å§ïŒ${lastName}`);
console.log(`幎霢ïŒ${age}`);
}
// 䜿çšäŸïŒ
const formData = {
'first-name': 'John',
'last-name': 'Doe',
age: 30
};
processFormData(formData);
ãã®äŸã¯ããã£ãŒã«ããäºåã«ããããªãåçãªãã©ãŒã ããŒã¿ãåŠçããæ¹æ³ã瀺ããŠããŸãããªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã䜿çšããŠããã©ãŒã ã®å€ãå®å šã«ã¢ã¯ã»ã¹ããŸãã
çµè«
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ã¯ãJavaScriptã³ãŒãã®å ç¢æ§ãšä¿å®æ§ãå€§å¹ ã«åäžãããããšãã§ãã匷åãªããŒã«ã§ãããããã®æ©èœã广çã«äœ¿çšããæ¹æ³ãçè§£ããããšã§ãè€éãªããŒã¿æ§é ã容æã«æ±ããäºæãã¬ãšã©ãŒãé²ãããšãã§ããŸãããããã®ãã¯ããã¯ãè³¢æã«äœ¿çšããæç¢ºã§ç°¡æœããã€ä¿¡é Œæ§ã®é«ãã³ãŒããæžãããã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšãå¿ããªãã§ãã ããã
ãªãã·ã§ãã«ãã§ã€ãã³ã°ãšãã©ã±ããèšæ³ããã¹ã¿ãŒããããšã§ãã©ããªJavaScriptéçºã®èª²é¡ã«ã察å¿ã§ããããã«ãªãã§ããããããããŒã³ãŒãã£ã³ã°ïŒ